#include<iostream>
#include<fstream>
#include<string>
#include<memory>
#include"bundle.h"

int main(int argc,char*argv[])
{
    std::cout << "argv[1]是原始文件路径名称" << std::endl;
    std::cout << "argv[2]是压缩包名称" << std::endl;
    if(argc < 3)
    {
        return -1;
    }
    std::string ifilename = argv[1];
    std::string ofilename = argv[2];

    std::ifstream ifs;
    ifs.open(ifilename,std::ios::binary); //以二进制流方式打开原始文件
    ifs.seekg(0,std::ios::end);     //跳转读写位置到末尾
    size_t fsize = ifs.tellg();     //获取末尾偏移量--文件长度
    ifs.seekg(0,std::ios::beg);     //跳转到文件起始
    std::string body;       
    body.resize(fsize); //跳转body大小为文件大小
    ifs.read(&body[0],fsize);   //读取文件所有数据到body中
    
    //文件压缩
    std::string packed = bundle::pack(bundle::LZIP,body); //LZIP是23种压缩算法的其中一个,用LZIP压缩算法压缩body字符串并用packed字符串接收压缩后的内容
    std::ofstream ofs;
    ofs.open(ofilename,std::ios::binary); //以二进制流方式打开存放压缩后数据的压缩包文件
    ofs.write(&packed[0],packed.size());    //将压缩后的数据写入压缩包文件
 
    ifs.close();
    ofs.close();
    return 0;
}